<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <link href="../../style.css" rel="stylesheet" type="text/css">
    <title>PETSc: Documentation: Changes: 2.0.18-2.0.21</title>
  </head>
  <body>

    <div id="logo">
      <h1>PETSc</h1>
    </div>

    <div id="header">
      <h1><!--begin-->Documentation: Changes: 2.0.18-2.0.21<!--end--></h1>
    </div>

    <hr>

    <div id="sidebar">
      <ul>
        <li><a href="../../index.html">Home</a></li>
        <li><a href="../../download/index.html">Download</a></li>
        <li><a href="../../features/index.html">Features</a></li>
        <li>
          <a href="../../documentation/index.html">Documentation</a>
          <ul>
            <li><a href="../index.html">Manual pages and Users Manual</a></li>
            <li><a href="../referencing.html">Referencing PETSc</a></li>
            <li><a href="../tutorials/index.html">Tutorials</a></li>
            <li><a href="../installation.html">Installation</a></li>
            <li><a href="../saws.html">SAWs</a></li>
            <li>
              <a href="index.html">Changes</a>
              <ul>
                <li><a href="dev.html">dev</a></li>
                <li><a href="310.html">3.10</a></li>
                <li><a href="39.html">3.9</a></li>
                <li><a href="38.html">3.8</a></li>
                <li><a href="37.html">3.7</a></li>
                <li><a href="36.html">3.6</a></li>
                <li><a href="35.html">3.5</a></li>
                <li><a href="34.html">3.4</a></li>
                <li><a href="33.html">3.3</a></li>
                <li><a href="32.html">3.2</a></li>
                <li><a href="31.html">3.1</a></li>
                <li><a href="300.html">3.0.0</a></li>
                <li><a href="233.html">2.3.3</a></li>
                <li><a href="232.html">2.3.2</a></li>
                <li><a href="231.html">2.3.1</a></li>
                <li><a href="230.html">2.3.0</a></li>
                <li><a href="221.html">2.2.1</a></li>
                <li><a href="220.html">2.2.0</a></li>
                <li><a href="216.html">2.1.6</a></li>
                <li><a href="215.html">2.1.5</a></li>
                <li><a href="213.html">2.1.3</a></li>
                <li><a href="212.html">2.1.2</a></li>
                <li><a href="211.html">2.1.1</a></li>
                <li><a href="21.html">2.1.0</a></li>
                <li><a href="2029.html">2.0.29</a></li>
                <li><a href="2028.html">2.0.28</a></li>
                <li><a href="2024.html">2.0.24</a></li>
                <li><a href="2022.html">2.0.22</a></li>
                <li><span class="current">2.0.18-21</span></li>
                <li><a href="2017.html">2.0.17</a></li>
                <li><a href="2016.html">2.0.16</a></li>
                <li><a href="2015.html">2.0.15</a></li>
              </ul>
            </li>
            <li><a href="../bugreporting.html">Bug Reporting</a></li>
            <li><a href="../codemanagement.html">Code Management</a></li>
            <li><a href="../faq.html">FAQ</a></li>
            <li><a href="../license.html">License</a></li>
            <li><a href="../linearsolvertable.html">Linear Solver Table</a></li>
          </ul>
        </li>
        <li><a href="../../publications/index.html">Applications/Publications</a></li>
        <li><a href="../../miscellaneous/index.html">Miscellaneous</a></li>
        <li><a href="../../miscellaneous/external.html">External Software</a></li>
        <li><a href="../../developers/index.html">Developers Site</a></li>
      </ul>
    </div>

    <!--begin-->

    <style type="text/css">
      h2 {
        color: red;
      }

      h4 {
        font-weight: bold;
        text-decoration: underline;
      }
    </style>

    <div id="main">

      <div align="center">
        <h2>NEW FEATURES and <a name="CHANGES">CHANGES</a> in PETSc 2.0.18-2.0.21</h2>
      </div>

      <h4>General:</h4>

      <ul>
        <li>
          Complex numbers performance upgrade: Added support for using
          optimized Fortran kernels for some key complex numbers numerical
          routines (such as matrix-vector products, vector norms, etc.) instead
          of the default C++ routines. This implementation exploits the
          maturity of Fortran compilers while retaining the identical user
          interface. For example, on rs6000 machines, the base single-node
          performance when using the Fortran kernels is 4-5 times faster than
          the default C++ code.
        </li>

        <li>
          Changed the names of various compiler flags, e.g., changed
          PETSC_COMPLEX to USE_PETSC_COMPLEX.
        </li>

        <li>
          Changed <code>PetscObjectInherit()</code> to
          <code>PetscObjectCompose()</code> since it really denotes
          a &quot;has-a&quot; relationship, not an &quot;is-a&quot;
          relationship.
        </li>
      </ul>

      <h4>AO (Application Orderings):</h4>

      <ul>
        <li>
          Changed <code>AOCreateDebug()</code> to
          <code>AOCreateBasic()</code>; changed
          <code>AOCreateDebugIS()</code> to
          <code>AOCreateBasicIS()</code>.
        </li>

        <li>
          Removed the MPI_Comm argument from <code>AOCreateBasicIS()</code>
          since it is contained in the IS arguments.
        </li>

        <li>
          Now the <code>AOxxxToxxxXX()</code> remapping routines will not
          map negative entries in the input arrays. This allows, for example,
          the mapping of neighbor lists that use negative entries to indicate
          non-existent neighbors due to boundaries, etc.
        </li>
      </ul>

      <h4>TS (Timestepping Solvers):</h4>

      <ul>
        <li>Added an interface to PVODE, the stiff integrator package of Hindmarsh et al.</li>
      </ul>

      <h4>SNES (Nonlinear Solvers):</h4>

      <ul>
        <li>
          Added support for using matrix colorings within finite difference
          Jacobian approximations. See the section &quot;Finite Difference
          Jacobian Approximations&quot; of the users manual for more details.
          Also see the man pages for
          <code>SNESDefaultComputeJacobianWithColoring()</code>.
        </li>

        <li>Fixed a bug in method SNES_EQ_NLS.</li>
        <li>Increased the default maximum number of function evaluations to 100000.</li>
      </ul>

      <h4>SLES (Linear Solvers):</h4>

      <ul>
        <li>See PC and KSP</li>
      </ul>

      <h4>KSP (Krylov Subspace Methods):</h4>

      <ul>
        <li>Added the routine <code>KSPGetResidualNorm()</code>.</li>
      </ul>

      <h4>PC (Preconditioners):</h4>

      <ul>
        <li>
          Added -pc_lu_fill and -pc_ilu_fill to replace -mat_lu_fill and
          -mat_ilu_fill; also added the commands <code>PCLUSetFill()</code>
          and <code>PCILUSetFill()</code>.
        </li>

        <li>Added <code>PCLUSetMatReordering()</code> and <code>PCILUSetMatReordering()</code>.</li>
      </ul>

      <h4>MAT (Matrices):</h4>

      <ul>
        <li>
          Added support for matrix colorings, which are intended primarily for use in finite
          difference Jacobian approximations. See the SNES section above for more info. New routines
          include:
          <ul>
            <li>MatFDColoringCreate()</li>
            <li>MatFDColoringSetParameters()</li>
            <li>MatFDColoringSetFrequency()</li>
            <li>MatFDColoringSetFunction()</li>
            <li>MatFDColoringSetFromOptions()</li>
            <li>MatFDColoringView()</li>
            <li>MatFDColoringApply()</li>
            <li>MatFDColoringDestroy()</li>
          </ul>
        </li>

        <li>
          Added the matrix option
          MatSetOption(mat,MAT_NEW_NONZERO_ALLOCATION_ERROR) that will cause an
          error if a new entry that has not been preallocated is generated in
          a sparse matrix. (currently implemented for AIJ and BAIJ matrices
          only). This is a useful flag when debugging memory preallocation.
        </li>

        <li>Replaced the options -mat_lu_fill and -mat_ilu_fill with -pc_lu_fill and -pc_ilu_fill.</li>
        <li>Added the routine MatSetValuesBlockedLocal() for BAIJ matrices.</li>
        <li>Changed the final argument of MatGetTypeFromOptions() from type int* to PetscTruth*.</li>

        <li>
          Added MatCreateSeqAdj() for supplying adjacency matrices to PETSc to
          do reordering on (for example RCM to reduce bandwidth and thus get
          better cache performance) and eventually partitioners.
        </li>

        <li>
          MatSetLocalToGlobalMapping() and MatSetLocalToGlobalMappingBlocked()
          now take a ISLocalToGlobalMapping object rather than a list of
          indices.
        </li>

        <li>
          Added the routine MatGetSubMatrix(), which extracts a parallel matrix
          from a parallel matrix (currently implemented only for the MPIAIJ
          format).
        </li>
      </ul>

      <h4>DA (Distributed Arrays):</h4>

      <ul>
        <li>
          When used with the DA_STENCIL_STAR stencil, type, the routine
          DAGetGlobalIndices() returns local-to-global mapping indices that now
          include the inactive corner ghost nodes.  This is useful, e.g., when
          using MatSetValuesLocal() to set matrix elements, including corner
          boundary nodes.
        </li>
      </ul>

      <h4>VEC (Vectors):</h4>

      <ul>
        <li>
          VecSetLocalToGlobalMapping() now takes a ISLocalToGlobalMapping
          object rather than a list of indices.
        </li>

        <li>Added the routine VecCreateMPIWithArray().</li>

        <li>
          Changed the calling sequence for VecCreateGhost(); added
          VecCreateGhostWithArray(), VecGhostUpdate[Begin/End](), and
          VecGhost[Get/Restore]LocalRepresentations().
        </li>
      </ul>

      <h4>IS (Index Sets):</h4>

      <ul>
        <li>
          Added ISGlobalToLocalMappingApply() to allow one to convert lists
          that are in the global numbering to a local numbering.
        </li>

        <li>Added a communicator as the first argument to ISLocalToGlobalMappingCreate().</li>
      </ul>

      <h4>Draw (Graphics):</h4>

      <ul>
        <li>Added routines for drawing simple histograms. See DrawHistCreate().</li>
        <li>Removed the option -draw_x_private_colormap and made a private colormap the default.</li>

        <li>
          Added the option -draw_x_shared_colormap to indicate not to use
          a private colormap. If you use Netscape on your machine and are also
          doing contour plots, you generally don't want to use a shared
          colormap.
        </li>

        <li>Improved the colors used in the contour plotting.</li>

        <li>
          Changed some routine names:
          <ul>
            <li>DrawText() to DrawString()</li>
            <li>DrawTextVertical() to DrawStringVertical()</li>
            <li>DrawTextSetSize() to DrawStringSetSize()</li>
            <li>DrawTextGetSize() to DrawStringGetSize()</li>
            <li>DrawSyncClear() to DrawSynchronizedClear()</li>
            <li>DrawSyncFlush() to DrawSynchronizedFlush()</li>
            <li>DrawSyncGetMouseButton() to DrawSynchronizedGetMouseButton().</li>
          </ul>
        </li>
      </ul>

      <h4>Viewers:</h4>

      <ul>
        <li>Added VIEWER_STDOUT_() and VIEWER_STDERR_().</li>
      </ul>

      <h4>System Routines:</h4>

      <ul>
        <li>Added the routine OptionsClearValue().</li>

        <li>
          Added the option -get_resident_set_size that causes the program to
          call PetscGetResidentSetSize() at the end of the run and print how
          much physical memory each process has used.
        </li>

        <li>
          Changed OptionsGetProgramName() to PetscGetProgramName() and changed
          the calling sequence to match PetscGetHostname(), etc.
        </li>

        <li>Changed BINARY_INT and BINARY_SCALAR to PETSC_INT and PETSC_SCALAR.</li>
      </ul>

      <h4>Error Handling:</h4>
      <h4>Event Logging:</h4>
      <h4>Fortran Interface:</h4>

      <ul>
        <li>
          Added routines to map between C and Fortran representations of communicators
          <ul>
            <li><code>extern int MPICCommToFortranComm(MPI_Comm,int *);</code></li>
            <li><code>extern int MPIFortranCommToCComm(int,MPI_Comm*);</code></li>
          </ul>

          These provide the same functionality that

          <ul>
            <li><code>extern int PetscCObjectToFortranObject(void *,int *);</code></li>
            <li><code>extern int PetscFortranObjectToCObject(int,void *);</code></li>
          </ul>

          do for PETSc objects.
        </li>

        <li>
          Removed the macros Double, DBLE, PetscDoubleExp as they are no longer
          required. PETSc now compiles on the Cray T3D/T3E with the -dp option
          that correctly handles Fortran code using double precision.
        </li>

        <li>
          Added support for MatGetRow() MatRestoreRow() from Fortran; see
          manpage for Fortran calling sequence.
        </li>

        <li>
          Added PetscBinaryOpen(), PetscBinaryClose(), PetscBinaryRead() and
          PetscBinaryWrite() for binary IO from Fortran; see
          src/vec/examples/tests/ex20.F. Most users should not need this
          functionality.
        </li>
      </ul>

    </div>

    <!--end-->

    <hr>

  </body>
</html>
